home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_13_12
/
colvin
/
runtime.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1995-10-10
|
1KB
|
50 lines
////////////////////////////////////////////////////////////
// runtime.cpp Copyright 1994 Gregory Colvin.
// Free distribution OK with this notice.
//
// Runtime library patches to track working papers.
#include "runtime.h"
static new_handler cur_new_handler;
new_handler set_new_handler(new_handler cur) throw() {
new_handler old= cur_new_handler;
cur_new_handler = cur;
return old;
}
static void* allocate_loop(size_t n) {
void* p=0;
for(;;) {
p = allocate(n);
if (p || !cur_new_handler)
break;
cur_new_handler();
}
return p;
}
void* operator new(size_t n) throw (bad_alloc) {
if (n == 0) n++;
void* p= allocate_loop(n);
if (!p)
throw bad_alloc();
return p;
}
void* operator new[](size_t n) throw(bad_alloc) {
if (n == 0) n++;
void* p= allocate_loop(n);
if (!p)
throw bad_alloc();
return p;
}
void operator delete(void* p) throw() {
deallocate(p);
}
void operator delete[](void* p) throw() {
deallocate(p);
}